var NEXT_SPEED = 5000;
var ANIM_SPEED = 500;
var WIDTH = 500;

var slides = 0;
var timer = null;
var transition = false;
var current = 1;

function init() {
  slides = $('.slide').size();

  $('#controls a').click(function(e) {
    switch ($(this).attr('class')) {
      case 'pause':
        stop();
        break;
      case 'item':
        stop();
        animate(parseInt($(this).attr('rel')));
        break;
      case 'prev':
        stop();
        prev();
        start();
        break;
      case 'next':
        stop();
        next();
        start();
        break;
    }
    e.stopPropagation();
    e.preventDefault();
  });

  start();
}

function start() {
  if (!timer) {
    timer = setInterval(next, NEXT_SPEED);
  }
}

function stop() {
  if (timer) {
    clearInterval(timer);
    timer = null;
  }
}

function next() {
  animate(current + 1);
}

function prev() {
  animate(current - 1);
}

function animate(i) {
  if (transition) {return;}

  if (i > slides) {
    dest = 0;
    i = 1;
  } else if (i < 1) {
    dest = -slides * WIDTH + WIDTH;
    i = slides;
  } else if (i > current) {
    dest = -i * WIDTH + WIDTH;
  } else if (i < current) {
    dest = -i * WIDTH + WIDTH;
  }

  $('#presentation').attr('className', 'item_' + i);
  transition = true;
  current = i;
  $('#viewport').animate({left: dest}, ANIM_SPEED, function() {transition = false;});
}